#include <stdio.h>
#include <math.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL_tab.h>
#include <SDL_phelma.h>

int main(int a, char** b) { int ligne=500,col=660,i,j,nbligne,nbcol;
  unsigned int** im;
  SDL_Surface*  imsdl;
  SDL_Surface*  ecran;
  SDL_Rect pos;

  printf("Ce programme affiche une image couleur bmp, la convertit en tableau C, traite le tableau, l'affiche et le sauve en fichier bmp\n"); 

      /* Creation d'une fenetre de dimension dimx x dimy, couleurs sur 32 bits */
  ecran=newfenetregraphique(col,ligne);

  	/* On charge une image bmp, couleur sur 32 bits */
  imsdl = IMG_Load("lena2.bmp"); 
  if (imsdl==NULL) { printf("Erreur chargement image lena2.bmp\n"); exit(0) ; }

	/* On definit la postion d'affichage */
  pos.x=10; pos.y=100;
	/* On colle cette image sur l'ecran : attention, elle est en memoire, pas a l'ecran */
  SDL_BlitSurface(imsdl,NULL,ecran, &pos);
  puts("Taper pour continuer"); getchar();

	/* Et maintenant, on affiche */
  SDL_Flip(ecran);
  puts("Taper pour continuer"); getchar();

  	/* On convertit cette image SDL en tableau 2D pour la traiter */
  im = SDLtoim32(imsdl);
  nbligne = imsdl->h; nbcol=imsdl->w;

	/* On parcourt toute l'image et on inverse chaque pixel 
	En couleur, un pixel est code sur 32 bits avec Transparence, Rouge, Vert, Bleu (ARGB), 8 bits pour chaque */
  for (i=0; i<nbligne; i++) 
    for (j=0; j<nbcol; j++) { unsigned char* p = (unsigned char*) (im[i]+j);
      unsigned char rouge = 255-ROUGE(im[i][j]); //*(p+2);
      unsigned char vert = 255-VERT(im[i][j]); //*(p+1);
      unsigned char bleu = 255-BLEU(im[i][j]); //*(p+0);
      im[i][j]=0;
//im[i][j]=((255-rouge)<<16) | ((255-vert)<<8) |  (255-bleu)<<0;
      SETROUGE(im[i][j],rouge);
      SETVERT(im[i][j],vert);
      SETBLEU(im[i][j],bleu);
  }
 	/* On colle cette nouvelle image sur l'ecran, en position  350 150 */
  afficheim32SDL(ecran,im,nbligne,nbcol,350,150);
  puts("Taper pour continuer"); getchar();
}
